package invoicesystem.dao;

import invoicesystem.entry.InvoicingRecord;
import invoicesystem.entry.Order;
import invoicesystem.pojo.*;
import invoicesystem.util.PageHelper;

import java.util.ArrayList;

public interface InvoicingRecordDao {
    /**
     *  查询
     * @param enterprise_id  来自登录的时获得的企业id
     * @return  获取发票抬头及地址信息
     */
    TitleAndAddress selectTitleAndAddress(Integer enterprise_id);

    /**
     *查询
     * @return 所有申请开发票的记录
     */
    ArrayList<InvoicingApplyList>  selectall();

    /**
     * 根据申请时间，抬头，发票金额范围进行选择查询
     * @param selectTitleAndInvoic 查询的信息
     * @return 符合条件集合
     */
    ArrayList<InvoicingApplyList>  selectByCreate_timeOrByTitleOramount(SelectTitleAndInvoic selectTitleAndInvoic, PageHelper pageHelper);



    /**
     *  开票，修改标头及地址信息
     * @param title 表头
     * @return 1成功 0失败
     */
    int updateTitleAndAddress(String title);

    /**
     * 开票记录表添加
     * @param invoicingRecord 添加信息
     * @return 1成功 0失败
     */
    int insertInvoicingRecord(InvoicingRecord invoicingRecord);

    /**
     * 开票记录表修改
     * @param invoicingRecord 修改的信息
     * @return 1成功 0失败
     */
    //int updateInvoicingRecord(InvoicingRecord invoicingRecord);

    /**
     * 发票记录中已开发票进行退票操作,状态改为已作废；关联的order表里状态改为未开票
     * @param invoicingRecord_id 接收发票记录表的id
     *@return 涉及两个表的状态修改，返回2成功
     */
    int returnInvoicingRecord(Integer invoicingRecord_id);

    /**
     * liu
     * @param id
     * @return
     */
    ArrayList selectMultitable(Integer id);

    /**
     * liu
     * @param email_id
     * @return
     */
    ArrayList selectemail_id(Integer email_id);


    //用于分页：查询数据条数：
    int selectInvoicSize(SelectTitleAndInvoic selTitle);

    boolean updateInvoicingRecord(InvoicingRecord invoicingRecord);

}
